page.tsx 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. "use client";
  2. import { getUserInfoApi, getUserMoneyApi } from "@/api/user";
  3. import { useRouter } from "@/i18n";
  4. import { useGlobalStore } from "@/stores";
  5. import clsx from "clsx";
  6. import { useTranslations } from "next-intl";
  7. import { FC, useEffect, useState } from "react";
  8. import ItemCom from "./component/ItemCom";
  9. import MaskCom from "./component/MaskCom";
  10. import ModalCom from "./component/ModalCom";
  11. import "./page.scss";
  12. interface Props {}
  13. const Profile: FC<Props> = () => {
  14. const t = useTranslations("ProfilePage");
  15. const { token, userInfo, setUserInfo } = useGlobalStore();
  16. const userInfoRequest = async () => {
  17. getUserInfoApi().then((res) => {
  18. res.code == 200 && setUserInfo(res.data);
  19. });
  20. };
  21. let [money, setMoney] = useState({
  22. deposit: 0,
  23. point: 0,
  24. });
  25. const userMoneyRequest = async () => {
  26. getUserMoneyApi().then((res) => {
  27. res.code == 200 &&
  28. setMoney({
  29. deposit: res.data?.deposit || 0.0,
  30. point: res.data?.point || 0.0
  31. });
  32. });
  33. };
  34. useEffect(() => {
  35. if (token) {
  36. userInfoRequest();
  37. userMoneyRequest();
  38. }
  39. // eslint-disable-next-line react-hooks/exhaustive-deps
  40. }, [token]);
  41. const router = useRouter();
  42. const goPage = (path = "/") => {
  43. router.push(path);
  44. };
  45. const [visible, setVisible] = useState(false);
  46. const callbackFun = () => {
  47. setVisible(!visible);
  48. };
  49. const divClassName = clsx("bgImg", token && "default");
  50. const divClassName2 = clsx("userContent", token && "active");
  51. const divClassName3 = clsx("userInfo", token && "active");
  52. return (
  53. <div className="profile-box">
  54. <div className={divClassName2}>
  55. <div className={divClassName3}>
  56. <div>
  57. <div className={divClassName}></div>
  58. {token && (
  59. <div>
  60. <span>{t("Conta")}</span>
  61. <span className="phone">{userInfo?.user_phone || ""}</span>
  62. </div>
  63. )}
  64. </div>
  65. {
  66. token ?
  67. (
  68. <div className="goto" onClick={() => goPage(`/confirmPassword?userPhone=${userInfo.user_phone}&code=123456&alter=true`)}>
  69. <span className="iconfont icon-xiangzuo1"></span>
  70. </div>
  71. ) : (
  72. <div className="goto" onClick={() => goPage("/login")}>
  73. <span>{t("Login")}</span>
  74. <span className="iconfont icon-xiangzuo1"></span>
  75. </div>
  76. )
  77. }
  78. </div>
  79. {token && (
  80. <div className="coin">
  81. <div>
  82. <span className="iconfont icon-icon-wallet"></span>
  83. <div>
  84. <span>{t("Saldo")}</span>
  85. <div className="num">
  86. <span className="uppercase">brl </span>
  87. <span>{money.deposit || 0.0}</span>
  88. </div>
  89. </div>
  90. </div>
  91. <div>
  92. <span className="iconfont icon-gift2"></span>
  93. <div>
  94. <span onClick={() => setVisible(true)}>
  95. {t("Bônus")} <img className="a" src="/img/a.png" alt="" />
  96. </span>
  97. <div className="num">
  98. <span className="uppercase">brl </span>
  99. <span>{money.point || 0.0}</span>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. )}
  105. </div>
  106. <div className="link">
  107. <span onClick={() => goPage("/deposit")}>{t("Depósito")}</span>
  108. <span onClick={() => goPage(token ? "/withdraw" : `/login?redirect=/withdraw`)}>
  109. {t("Sacar")}
  110. </span>
  111. </div>
  112. <ItemCom />
  113. <ModalCom />
  114. <MaskCom visible={visible} callbackFun={callbackFun} />
  115. </div>
  116. );
  117. };
  118. export default Profile;